#/*************************************************************************
#    > File Name: examples/example_Yaml.py
#    > Author: Yan Wang
#    > Mail: wangyan@imnu.edu.cn
#    > Created Time: 2022年06月22日 星期三 23时22分03秒
# ************************************************************************/
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys   
sys.path.append('../Lib/')    
from Load_Lib import *       


print("The examples in this file are:")   
ex_name={"1":"Read_Yaml"
,"2":"Show_Keys_in_Yaml"
,"3":"Locate_Key_in_Yaml"
,"4":"Modify_Value"
,"5":"Modify_Value_R"
,"all":"all examples"}    #字典，所有对应函数为Lib/Yaml_Operation.py
for key in ex_name:
	print(key, ex_name[key])       #if条件语句，如果key在ex_name里面，则输出eg：1 Read_Yaml
num=input("请输入想要运行的例子：")


if num == "1" or num == ex_name["1"] or num == "all":
# Read_Yaml
# 一个参数为Yaml文件
# 读取file_name(.yaml)文件
# 输出为.yaml文件内容 
	file_name="examples/test_input/test.yaml"   
	Exhibit_Function(Read_Yaml, [file_name])  


if num == "2" or num == ex_name["2"] or num == "all":
# Show_Keys_in_Yaml
# 一个参数为Yaml文件
# 找到yaml文件并且读取dict_keys(相当于字典的key)
# 输出为.yaml文件的key(不是一个列表)
# ['PROCESS', 'OUTPUT_FOLDER', 'RECORD_FILE', 'DATA_FOLDER', 'EVENT_FOLDER', 'SINGLE_PLOT', 'COMBINE_PLOT', 'INPUT_FOLDER', 'ANALYSIS_FILE', 'DETECTOR_FILE', 'FLOW_FILE', 'SIGNAL_FILE', 'INPUT_FILE', 'VAR_FILE', 'CUT_FOLDER', 'DEBUG_FILE', 'PLOT_FILE']
	file_name="examples/test_input/test.yaml"   
	results=Exhibit_Function(Show_Keys_in_Yaml, [file_name])    
# yaml中输出key为yigeteshude dict_keys 格式，类似于dict， 不是列表， 不可以使用数字索引， 但可以用以下方式转化为列表。
	print([key for key in results])


if num == "3" or num == ex_name["3"] or num == "all":
# Locate_Key_in_Yaml
# 两个元素(A,B),A为读取的yaml文件,B为输入的key
# 根据file_name,找到key对应的value
# 输出为：sigh_w4b_1(在"examples/test_input/test.yaml" 中为"PROCESS"的对应值)
	file_name="examples/test_input/test.yaml"   
	key="PROCESS"
	Exhibit_Function(Locate_Key_in_Yaml, [file_name, key])   


if num == "4" or num == ex_name["4"] or num == "all":
# Modify_Value
# 三个参数(A,B,C),A为最后输出的文件,B为file_name中的key,C为value的替换值
# 将file_name复制到test_file_name中并且将后面的value替换为新的new_valuekey
# 结果在 test_output/test.yaml中,文件内容相同(但是test_file_name与file_name每一行的顺序不一致),只不过在最后输出文件中的"PROCESS"后面的值替换为"test_value"
	file_name="examples/test_input/test.yaml"   
	test_file_name="examples/test_output/test.yaml"   
	Copy_File(file_name,test_file_name)   
	key="PROCESS"
	new_value="test_value"
	Exhibit_Function(Modify_Value, [test_file_name, key, new_value])   
	print("The results can be checked in ", test_file_name)   


if num == "5" or num == ex_name["5"] or num == "all":
# Modify_Value_R
# 与以上函数类似 
	test_file_name="examples/test_output/test_r.yaml"  
	Copy_File(file_name,test_file_name)   
	Exhibit_Function(Modify_Value_R, [test_file_name, key, new_value])   
	print("The results can be checked in ", test_file_name)   

	#Copy_File(file_name,test_file_name)
	#Modify_Value_R(test_file_name,key,new_value)
